在過去如果我們想要找到陣列中符合條件的元素,可能會使用 forEach
或是 for 循環
,但是 forEach 是不能跳過或終止的,所以如果當陣列過大時可能會有效能問題,而 for 循環雖然可以終止和跳過,但是可讀性不是那麼高,不能一眼就看出是要找什麼元素。
而 ES6 中的 find()
方法會回傳第一個滿足條件的元素,當找到了就會立馬返回,不會繼續執行,也就優化了原本 forEach 跟 for 循環的缺點嚕!
arr.find(element, index, array);
以一個工具人清單為例:
const toolMan = [
{name: '阿華', skill: '買飯吃'},
{name: '豪豪', skill: '馬伕'},
{name: '卿哥', skill: '修傢俱'}
];
假如今天桌子有點晃,我們要找出會修傢俱的工具人,就可以這樣寫:
const fixTable = toolMan.find(item => item.skill==='修傢俱');
console.log(fixTable); // {name: "卿哥", skill: "修傢俱"}
那如果想要知道元素在陣列中的索引位置
,對他進行刪除等操作,就可以使用 findIndex
。
假如今天良心發現,覺得把爸爸(也就是卿哥)當工具人很不孝,要從工具人清單移除,就可以這樣寫:
const daddy = toolMan.findIndex(item => item.name==='卿哥'); // 得到 中卿索引位置 2
toolMan.splice(daddy,1); // 刪除中卿元素
很實用的教學文toolMan 內的物件屬性可以再加入 tele 這樣方便打電話
好建議XDDD!!!